From ba91bf6d1838e5779afe2404e7c4702a458175a5 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 2 May 2005 17:53:52 +0000 Subject: [PATCH] Return a sufficient width for cases where pango_layout_get_pixel_extents() 2005-05-02 Matthias Clasen * gtk/gtkcellrenderertext.c (get_size): Return a sufficient width for cases where pango_layout_get_pixel_extents() returns a rectangle with nonzero x. --- ChangeLog | 4 ++++ ChangeLog.pre-2-10 | 4 ++++ ChangeLog.pre-2-8 | 4 ++++ gtk/gtkcellrenderertext.c | 13 ++++++------- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1db7d1bc78..7043b5a34e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2005-05-02 Matthias Clasen + * gtk/gtkcellrenderertext.c (get_size): Return a sufficient + width for cases where pango_layout_get_pixel_extents() returns + a rectangle with nonzero x. + * gtk/gtkselection.c: Small doc fixes. * gtk/gtkmenushell.c (gtk_menu_shell_set_take_focus): diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 1db7d1bc78..7043b5a34e 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,5 +1,9 @@ 2005-05-02 Matthias Clasen + * gtk/gtkcellrenderertext.c (get_size): Return a sufficient + width for cases where pango_layout_get_pixel_extents() returns + a rectangle with nonzero x. + * gtk/gtkselection.c: Small doc fixes. * gtk/gtkmenushell.c (gtk_menu_shell_set_take_focus): diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 1db7d1bc78..7043b5a34e 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,5 +1,9 @@ 2005-05-02 Matthias Clasen + * gtk/gtkcellrenderertext.c (get_size): Return a sufficient + width for cases where pango_layout_get_pixel_extents() returns + a rectangle with nonzero x. + * gtk/gtkselection.c: Small doc fixes. * gtk/gtkmenushell.c (gtk_menu_shell_set_take_focus): diff --git a/gtk/gtkcellrenderertext.c b/gtk/gtkcellrenderertext.c index f7d93b519e..b3235c44a8 100644 --- a/gtk/gtkcellrenderertext.c +++ b/gtk/gtkcellrenderertext.c @@ -1516,7 +1516,7 @@ get_size (GtkCellRenderer *cell, pango_layout_get_pixel_extents (layout, NULL, &rect); if (height) - *height = GTK_CELL_RENDERER (celltext)->ypad * 2 + rect.height; + *height = cell->ypad * 2 + rect.height; /* The minimum size for ellipsized labels is ~ 3 chars */ if (width) @@ -1533,12 +1533,11 @@ get_size (GtkCellRenderer *cell, char_width = pango_font_metrics_get_approximate_char_width (metrics); pango_font_metrics_unref (metrics); - *width = GTK_CELL_RENDERER (celltext)->xpad * 2 - + (PANGO_PIXELS (char_width) * MAX (priv->width_chars, 3)); + *width = cell->xpad * 2 + (PANGO_PIXELS (char_width) * MAX (priv->width_chars, 3)); } else { - *width = GTK_CELL_RENDERER (celltext)->xpad * 2 + rect.width; + *width = cell->xpad * 2 + rect.x + rect.width; } } @@ -1547,16 +1546,16 @@ get_size (GtkCellRenderer *cell, if (x_offset) { if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) - *x_offset = (1.0 - cell->xalign) * (cell_area->width - rect.width - (2 * cell->xpad)); + *x_offset = (1.0 - cell->xalign) * (cell_area->width - (rect.x + rect.width + 2 * cell->xpad)); else - *x_offset = cell->xalign * (cell_area->width - rect.width - (2 * cell->xpad)); + *x_offset = cell->xalign * (cell_area->width - (rect.x + rect.width + 2 * cell->xpad)); if (priv->ellipsize_set || priv->wrap_width != -1) *x_offset = MAX(*x_offset, 0); } if (y_offset) { - *y_offset = cell->yalign * (cell_area->height - rect.height - (2 * cell->ypad)); + *y_offset = cell->yalign * (cell_area->height - (rect.height + 2 * cell->ypad)); *y_offset = MAX (*y_offset, 0); } } -- 2.30.2